package configs

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
)

var conf *config
var configPath string

func GetConf() *config {
	if conf == nil {
		InitConfig("./configs.yaml")
	}
	return conf
}

func InitConfig(configPath_ string) {
	configPath = configPath_
	//判断文件configPath_的目录不存在则先创建目录，再判断configPath_文件不存在则创建文件
	// 获取目录路径
	dir := filepath.Dir(configPath)
	// 判断目录是否存在，不存在则创建
	if _, err := os.Stat(dir); os.IsNotExist(err) {
		err = os.MkdirAll(dir, 0755)
		if err != nil {
			log.Fatal(err)
		}
	}

	// 判断文件是否存在，不存在则创建
	if _, err := os.Stat(configPath); os.IsNotExist(err) {
		_, err = os.Create(configPath)
		if err != nil {
			log.Fatal(err)
		}
	}

	conf = newConfig()
	err := conf.LoadFromFile(configPath)
	if err != nil {
		fmt.Println("初始化配置失败" + err.Error())
		panic(err)
		return
	}
	return
}

func SetDefault(k string, v any) {
	if GetConf() == nil {
		return
	}
	MysqlHost := GetConf().GetString(k)
	if MysqlHost == "" {
		GetConf().Set(k, v)
	}
}
